Appearance
洛谷 P5985 · 难度 提高+/省选−
给定 n 个整数 a1..n,请找到 n 个非负整数 b1..n,使得 a1×f(b1)+a2×f(b2)+...+an×f(bn) 的值最大,其中 f(x) 为 x 在二进制下的 1 的个数。
你找到的这 n 个非负整数 b1..n 需要满足 0≤b1<b2<...<bn≤m。
第一行两个整数 n,m。
第二行包含 n 个整数 a1,a2,...,an。
输出一行一个整数,即 a1×f(b1)+a2×f(b2)+...+an×f(bn) 的最大值。
对于 100% 的数据,1≤n≤200,n−1≤m≤1018,|ai|≤1014。
b1=3,b2=4,b3=5,则答案为 2×2+(−1)×1+3×2=9。
输入
3 5 2 -1 3
输出
9